package models

import (
	"time"

	"gorm.io/gorm"
)

// 优惠券模板
type CouponTemplate struct {
	gorm.Model
	Name         string    `gorm:"not null"`           // 优惠券名称
	Type         string    `gorm:"not null"`           // 优惠券类型：amount（固定金额）, percent（折扣比例）
	Value        float64   `gorm:"not null"`           // 优惠值：固定金额或折扣比例
	MinAmount    float64   `gorm:"not null"`           // 最低使用金额
	ValidDays    int       `gorm:"not null"`           // 有效期天数
	StartTime    time.Time `gorm:"not null"`           // 发放开始时间
	EndTime      time.Time `gorm:"not null"`           // 发放结束时间
	TotalCount   int       `gorm:"not null"`           // 发放总量
	UsedCount    int       `gorm:"not null;default:0"` // 已兑换数量
	PointsNeeded int       `gorm:"not null"`           // 兑换所需积分
	Description  string    // 使用说明
}

// 用户优惠券
type UserCoupon struct {
	gorm.Model
	UserID      uint           `gorm:"not null;index"`            // 用户ID
	User        User           `gorm:"foreignKey:UserID"`         // 用户关联
	TemplateID  uint           `gorm:"not null;index"`            // 优惠券模板ID
	Template    CouponTemplate `gorm:"foreignKey:TemplateID"`     // 优惠券模板关联
	Status      string         `gorm:"not null;default:'unused'"` // 状态：unused（未使用）, used（已使用）, expired（已过期）
	ValidUntil  time.Time      `gorm:"not null"`                  // 有效期截止时间
	UsedTime    *time.Time     // 使用时间
	UsedOrderID *uint          // 使用订单ID
}
